题目大意:
给定一个字符串S 和 另一个字符串T,在S中找到一个最短长度的子串包含T中所有的字母。 时间期望是O(N)
如:S = "ADOBECODEBANC"
T = "ABC"
最短子串是 "BANC"
提示:
- 如果没有找到子串,则返回
""
空串 - 如果有多个满足条件的字串,题目保证最短子串只有唯一的一个
思路:
维护一个计数数组CountTable统计字符串T所出现的所有字母次数,再开始遍历字符串S,同时开始统计T所出现的字母在S所出现的次数。 如果遍历过程中统计的字母次数和T的长度相同,说明我们遍历的得到的这个子串就是一个 Window Substring,满足条件!记录这个subString,开始缩小这个Window Substring,直到条件不满足 继续遍历寻找下一个 Window Substring。
1 | class Solution { |